package testes;

import static org.junit.Assert.*;

import java.util.HashSet;
import java.util.Set;

import org.bunny.businessLayer.CalendarDate;
import org.bunny.businessLayer.Clube;
import org.bunny.businessLayer.Equipa;
import org.bunny.businessLayer.Jogador;
import org.bunny.businessLayer.Membro;
import org.bunny.businessLayer.Pais;
import org.bunny.businessLayer.Participacao;
import org.bunny.businessLayer.PosicaoJogador;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class JogadorTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testToString() {
		Pais p = new Pais();
		Clube c = new Clube();
		PosicaoJogador pos = PosicaoJogador.Avancado;
		Jogador jg = new Jogador(new CalendarDate(1,1,1990), "Joao", p,pos , c);

		assertEquals("Jogador [posicao=" + pos + ", clube=" + c + "]\n",jg.toString());

	}

	@Test
	public void testJogador() {
		Pais p = new Pais();
		Clube c = new Clube();
		Jogador jg = new Jogador(new CalendarDate(1,1,1990), "Joao", p, PosicaoJogador.Avancado, c);
		
		CalendarDate cd = new CalendarDate(2,2,1998);
		jg.setData_nascimento(cd);
		assertEquals(cd,jg.data_nascimento());

		jg.setNome("Sandro");
		assertEquals("Sandro",jg.nome());

		Pais p2 = new Pais();
		jg.setNacionalidade(p2);
		assertEquals(p2,jg.nacionalidade());

		Clube c2 = new Clube();
		jg.setClube(c2);
		assertEquals(c2,jg.clube());

		jg.setPosicao(PosicaoJogador.Defesa);
		jg.setPosicao(PosicaoJogador.GuardaRedes);
		jg.setPosicao(PosicaoJogador.Medio);
		assertEquals(PosicaoJogador.Medio,jg.posicao());
		
		assertEquals(PosicaoJogador.Defesa,PosicaoJogador.valueOf("Defesa"));

		Participacao pa1 = new Participacao();
		Participacao pa2 = new Participacao();
		Set<Participacao> participacoes = new HashSet<Participacao>();
		participacoes.add(pa2);

		jg.setParticipacoes(participacoes);
		assertEquals(participacoes, jg.participacoes());

		Membro m1 = new Membro();
		Membro m2 = new Membro();
		Set<Membro> membros = new HashSet<Membro>();
		membros.add(m2);

		jg.setMembro(membros);
		assertEquals(membros,jg.membro());
		
		Equipa eq1 = new Equipa();
		Equipa eq2= new Equipa();
		Set<Equipa> equipa = new HashSet<Equipa>();
		equipa.add(eq2);
		
		jg.setEquipa(equipa);
		assertEquals(equipa,jg.equipa());
		
		
		Clube c5 = new Clube();
		jg.mudaClube(c5);
		assertEquals(c5,jg.clube());
	}

	
}
